using System.ComponentModel.DataAnnotations.Schema;

namespace Lzfy_His_Service.Models
{
    public class RefundTaskDetail
    {
        public long Id { get; set; }
        
        [Column("input_date")]
        public DateTime? InputDate { get; set; }
        
        [Column("master_id")]
        public long? MasterId { get; set; }
        
        [Column("patient_id")]
        public string? PatientId { get; set; }
        
        [Column("account_id")]
        public string? AccountId { get; set; }
        
        [Column("account_index")]
        public string? AccountIndex { get; set; }
        
        [Column("balance")]
        public decimal? Balance { get; set; }
        
        [Column("contact_count")]
        public int? ContactCount { get; set; }
        
        [Column("contact_time1")]
        public DateTime? ContactTime1 { get; set; }
        
        [Column("contact_time2")]
        public DateTime? ContactTime2 { get; set; }
        
        [Column("contact_time3")]
        public DateTime? ContactTime3 { get; set; }
        
        [Column("contact_time4")]
        public DateTime? ContactTime4 { get; set; }
        
        [Column("contact_time5")]
        public DateTime? ContactTime5 { get; set; }
        
        [Column("phone_number")]
        public string? PhoneNumber { get; set; }
        
        [Column("pat_name")]
        public string? PatName { get; set; }
        
        [Column("id_number")]
        public string? IdNumber { get; set; }
        
        [Column("sex")]
        public string? Sex { get; set; }
        
        [Column("next_of_kin")]
        public string? NextOfKin { get; set; }
        
        [Column("next_of_kin_phone")]
        public string? NextOfKinPhone { get; set; }
        
        [Column("guardian_name")]
        public string? GuardianName { get; set; }
        
        [Column("guardian_idcode")]
        public string? GuardianIdcode { get; set; }
        
        [Column("notes1")]
        public string? Notes1 { get; set; }
        
        [Column("notes2")]
        public string? Notes2 { get; set; }
        
        [Column("notes3")]
        public string? Notes3 { get; set; }
        
        [Column("notes4")]
        public string? Notes4 { get; set; }
        
        [Column("notes5")]
        public string? Notes5 { get; set; }
        
        [Column("user_notes1")]
        public string? UserNotes1 { get; set; }
        
        [Column("user_notes2")]
        public string? UserNotes2 { get; set; }
        
        [Column("user_notes3")]
        public string? UserNotes3 { get; set; }
        
        [Column("user_notes4")]
        public string? UserNotes4 { get; set; }
        
        [Column("user_notes5")]
        public string? UserNotes5 { get; set; }
    }

    public class RefundTaskDetailCreateRequest
    {
        public long? MasterId { get; set; }
        public string? PatientId { get; set; }
        public string? AccountId { get; set; }
        public string? AccountIndex { get; set; }
        public decimal? Balance { get; set; }
        public int? ContactCount { get; set; }
        public DateTime? ContactTime1 { get; set; }
        public DateTime? ContactTime2 { get; set; }
        public DateTime? ContactTime3 { get; set; }
        public DateTime? ContactTime4 { get; set; }
        public DateTime? ContactTime5 { get; set; }
        public string? PhoneNumber { get; set; }
        public string? PatName { get; set; }
        public string? IdNumber { get; set; }
        public string? Sex { get; set; }
        public string? NextOfKin { get; set; }
        public string? NextOfKinPhone { get; set; }
        public string? GuardianName { get; set; }
        public string? GuardianIdcode { get; set; }
        public string? Notes1 { get; set; }
        public string? Notes2 { get; set; }
        public string? Notes3 { get; set; }
        public string? Notes4 { get; set; }
        public string? Notes5 { get; set; }
        public string? UserNotes1 { get; set; }
        public string? UserNotes2 { get; set; }
        public string? UserNotes3 { get; set; }
        public string? UserNotes4 { get; set; }
        public string? UserNotes5 { get; set; }
    }

    public class RefundTaskDetailUpdateRequest
    {
        public long Id { get; set; }
        public long? MasterId { get; set; }
        public string? PatientId { get; set; }
        public string? AccountId { get; set; }
        public string? AccountIndex { get; set; }
        public decimal? Balance { get; set; }
        public int? ContactCount { get; set; }
        public DateTime? ContactTime1 { get; set; }
        public DateTime? ContactTime2 { get; set; }
        public DateTime? ContactTime3 { get; set; }
        public DateTime? ContactTime4 { get; set; }
        public DateTime? ContactTime5 { get; set; }
        public string? PhoneNumber { get; set; }
        public string? PatName { get; set; }
        public string? IdNumber { get; set; }
        public string? Sex { get; set; }
        public string? NextOfKin { get; set; }
        public string? NextOfKinPhone { get; set; }
        public string? GuardianName { get; set; }
        public string? GuardianIdcode { get; set; }
        public string? Notes1 { get; set; }
        public string? Notes2 { get; set; }
        public string? Notes3 { get; set; }
        public string? Notes4 { get; set; }
        public string? Notes5 { get; set; }
        public string? UserNotes1 { get; set; }
        public string? UserNotes2 { get; set; }
        public string? UserNotes3 { get; set; }
        public string? UserNotes4 { get; set; }
        public string? UserNotes5 { get; set; }
    }

    public class RefundTaskDetailQueryRequest
    {
        public long? MasterId { get; set; }
        public string? PatientId { get; set; }
        public string? PatName { get; set; }
        public string? PhoneNumber { get; set; }
        public int? ContactCount { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? EndDate { get; set; }
        public int PageIndex { get; set; } = 1;
        public int PageSize { get; set; } = 20;
    }

    public class RefundTaskDetailResponse
    {
        public long Id { get; set; }
        public DateTime? InputDate { get; set; }
        public long? MasterId { get; set; }
        public string? PatientId { get; set; }
        public string? AccountId { get; set; }
        public string? AccountIndex { get; set; }
        public decimal? Balance { get; set; }
        public int? ContactCount { get; set; }
        public DateTime? ContactTime1 { get; set; }
        public DateTime? ContactTime2 { get; set; }
        public DateTime? ContactTime3 { get; set; }
        public DateTime? ContactTime4 { get; set; }
        public DateTime? ContactTime5 { get; set; }
        public string? PhoneNumber { get; set; }
        public string? PatName { get; set; }
        public string? IdNumber { get; set; }
        public string? Sex { get; set; }
        public string? NextOfKin { get; set; }
        public string? NextOfKinPhone { get; set; }
        public string? GuardianName { get; set; }
        public string? GuardianIdcode { get; set; }
        public string? Notes1 { get; set; }
        public string? Notes2 { get; set; }
        public string? Notes3 { get; set; }
        public string? Notes4 { get; set; }
        public string? Notes5 { get; set; }
        public string? UserNotes1 { get; set; }
        public string? UserNotes2 { get; set; }
        public string? UserNotes3 { get; set; }
        public string? UserNotes4 { get; set; }
        public string? UserNotes5 { get; set; }
    }

    public class BatchCreateTaskDetailRequest
    {
        public long MasterId { get; set; }
        public List<RefundTaskDetailCreateRequest> Details { get; set; } = new List<RefundTaskDetailCreateRequest>();
    }
}